package com.le.core.login.domin;

import com.le.business.after.domin.UserIdentity;
import com.le.common.basic.domin.BaseEntity;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Collection;

public class LoginUser extends BaseEntity implements UserDetails {

    private String identityId;

    private String token;

    private Long loginTime;

    private Long expireTime;

    private UserIdentity leUser;

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public Long getLoginTime() {
        return loginTime;
    }

    public void setLoginTime(Long loginTime) {
        this.loginTime = loginTime;
    }

    public Long getExpireTime() {
        return expireTime;
    }

    public void setExpireTime(Long expireTime) {
        this.expireTime = expireTime;
    }

    public UserIdentity getLeUser() {
        return leUser;
    }

    public void setLeUser(UserIdentity leUser) {
        this.leUser = leUser;
    }

    public String getIdentityId() {
        return identityId;
    }

    public void setIdentityId(String identityId) {
        this.identityId = identityId;
    }

    /**
     * 作用：返回用户的权限集合。
     * 解释：用于表示用户拥有的权限，通常以 GrantedAuthority 对象的形式返回。
     * @return
     */
    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    /**
     * 作用：返回用户的密码。
     * 解释：用于获取用户的密码，这是用于身份验证的敏感信息。
     * @return
     */
    @Override
    public String getPassword() {
        return leUser.getPassword();
    }

    /**
     * 作用：返回用户的用户名。
     * 解释：用于获取用户的用户名，是用于身份验证的标识。
     * @return
     */
    @Override
    public String getUsername() {
        return leUser.getUserName();
    }

    /**
     * 作用：返回帐户是否未过期。
     * 解释：用于判断用户的帐户是否在时间上未过期。
     * @return
     */
    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    /**
     * 作用：返回帐户是否未被锁定。
     * 解释：用于判断用户的帐户是否未被锁定，例如由于多次登录失败而被锁定。
     * @return
     */
    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    /**
     * 作用：返回用户的凭据（密码）是否未过期。
     * 解释：用于判断用户的凭据是否在时间上未过期，例如密码是否需要定期更改。
     * @return
     */
    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    /**
     * 作用：返回用户是否启用。
     * 解释：用于判断用户是否处于启用状态，如果用户被禁用，则可能无法进行身份验证。
     * @return
     */
    @Override
    public boolean isEnabled() {
        return true;
    }

}
